﻿Imports BUS
Imports DTO

Public Class MH_DanhSachMonHoc

    Dim bangMonHoc As New DataTable 'Biến lưu bảng MonHoc


    Private Sub MH_DanhSachMonHoc_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Xuất bảng MonHoc và DataGridView
        Dim mhBUS As New MonHocBUS
        bangMonHoc = mhBUS.LayBang()
        dgvDanhSach.DataSource = bangMonHoc
        dgvDanhSach.Columns("TenMon").Width = 200
        dgvDanhSach.Columns("MaMon").Width = 60
        'So luong mon hoc
        Label4.Text = bangMonHoc.Rows.Count
    End Sub

    Private Sub dgvDanhSach_RowEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvDanhSach.RowEnter
        'Lấy dòng hiện hành rồi xuất tên môn vào txtTenMon
        Dim index As Integer = e.RowIndex
        If index >= 0 And index < dgvDanhSach.Rows.Count Then
            txtTenMon.Text = bangMonHoc.Rows(index)("TenMon")
        End If
    End Sub

    Private Sub btnThem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnThem.Click

        If txtTenMon.Text.Trim = "" Then
            'Kiểm tra có nhập tên môn học hay chưa
            MessageBox.Show("Chưa nhập tên môn.")
        Else
            'Tiến hành thêm và thông báo kết quả
            Dim mhBUS As New MonHocBUS
            Dim mhDTO As New MonHocDTO
            mhDTO.TenMon = txtTenMon.Text.Trim()

            'Lấy số lương môn tối đa
            Dim tsBUS As New ThamSoBUS
            Dim tsTable As DataTable = tsBUS.LayBang()
            Dim tsDTO As New ThamSoDTO
            tsDTO.SoMonHoc = tsTable.Rows(0)("SoMonHoc")
            tsDTO.SiSoToiDa = tsTable.Rows(0)("SiSoToiDa1Lop")
            tsDTO.DiemChuanDatMon = tsTable.Rows(0)("DiemChuanDatMon")
            tsDTO.TuoiToiDa = tsTable.Rows(0)("TuoiToiDa")
            tsDTO.TuoiToiThieu = tsTable.Rows(0)("TuoiToiThieu")

            If (mhBUS.LaySoLuongMonHoc() < tsDTO.SoMonHoc) Then
                Dim r As Integer = mhBUS.ThemMonHoc(mhDTO)
                If r = 1 Then
                    MessageBox.Show("Thêm thành công.")
                    'Xuất lại bảng môn học sau khi thêm vào DataGridView
                    bangMonHoc = mhBUS.LayBang()
                    dgvDanhSach.DataSource = bangMonHoc
                    'So luong mon hoc
                    Label4.Text = bangMonHoc.Rows.Count
                Else
                    MessageBox.Show("Thêm thất bại.")
                End If
            Else
                MessageBox.Show("Đã vượt quá số lượng môn học tối đa")
            End If
        End If
    End Sub

    Private Sub btnXoa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnXoa.Click
        'Nếu dòng hiện hành tồn tại
        If dgvDanhSach.CurrentRow IsNot Nothing Then
            'Lấy mã môn của dòng hiện hành
            Dim i As Integer = dgvDanhSach.CurrentRow.Index
            bangMonHoc = dgvDanhSach.DataSource

            'Tiến hành thêm và thông báo kết quả
            Dim mhBUS As New MonHocBUS()
            Dim mhDTO As New MonHocDTO()
            mhDTO.MaMon = Integer.Parse(bangMonHoc.Rows(i)("MaMon"))
            Dim r As Integer = mhBUS.XoaMonHoc(mhDTO)
            If r = 1 Then
                MessageBox.Show("Xóa thành công.")
                'Xuất lại bảng môn học sau khi xóa trên DataGridView
                bangMonHoc = mhBUS.LayBang()
                dgvDanhSach.DataSource = bangMonHoc
                'So luong mon hoc
                Label4.Text = bangMonHoc.Rows.Count
            Else
                MessageBox.Show("Xóa thất bại.")
            End If
        End If

    End Sub

    Private Sub btnCapNhat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCapNhat.Click
        If txtTenMon.Text.Trim() = "" Then
            'Nếu chưa nhập tên môn để cập nhật
            MessageBox.Show("Chưa nhập tên môn.")
        Else
            'Nếu dòng hiện hành tồn tại
            If dgvDanhSach.CurrentRow IsNot Nothing Then
                'Lấy mã môn của dòng hiện hành
                Dim i As Integer = dgvDanhSach.CurrentRow.Index
                bangMonHoc = dgvDanhSach.DataSource
                Dim mhDTO As New MonHocDTO()
                mhDTO.MaMon = Integer.Parse(bangMonHoc.Rows(i)("MaMon"))
                mhDTO.TenMon = txtTenMon.Text
                'Tiến hành cập nhật và thông báo kết quả
                Dim mhBUS As New MonHocBUS()
                Dim r As Integer = mhBUS.CapNhatMonHoc(mhDTO)
                If r = 1 Then
                    MessageBox.Show("Cập nhật thành công.")
                    'Xuất lại bảng môn học sau khi cập nhật trên DataGridView
                    bangMonHoc = mhBUS.LayBang()
                    dgvDanhSach.DataSource = bangMonHoc
                Else
                    MessageBox.Show("Cập nhật thất bại.")
                End If
            End If
        End If

    End Sub
End Class